home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Beta / Quicktime 2.0 Beta.iso / Extensions / Sound Manager 3.0 / Sound.h < prev    next >
C/C++ Source or Header  |  1993-07-10  |  17KB  |  572 lines

  1. /************************************************************
  2.  
  3.  Sound Manager 3.0 release
  4.  
  5.  Created: Tuesday, June 29, 1993 3:28:55 PM
  6.  Sound.h
  7.  C Interface to the Macintosh Libraries
  8.  
  9.   Copyright Apple Computer, Inc. 1986-1993
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __SOUND__
  16. #define __SOUND__
  17.  
  18. #ifndef __TYPES__
  19. #include <Types.h>
  20. #endif
  21.  
  22. #ifndef __FILES__
  23. #include <Files.h>
  24. #endif
  25.  
  26. /*Gestalt information, to be merged into Gestalt interfaces*/
  27.  
  28. enum {
  29. //#define gestaltSoundAttr  'snd '            /*sound attributes*/
  30.  
  31. //gestaltStereoCapability = 0,                /*sound hardware has stereo capability*/
  32. //gestaltStereoMixing = 1,                    /*stereo mixing on external speaker*/
  33. //gestaltSoundIOMgrPresent = 3,                /*The Sound I/O Manager is present*/
  34. //gestaltBuiltInSoundInput = 4,                /*built-in Sound Input hardware is present*/
  35. //gestaltHasSoundInputDevice = 5,            /*Sound Input device available*/
  36.  gestaltPlayAndRecord = 6,                    /*built-in hardware can play and
  37.                                             record simultaneously*/
  38.  
  39. /*the following bits were not defined prior to Sound Mgr 3.0*/
  40.  gestalt16BitSoundIO = 7,                    /*sound hardware can play and record
  41.                                             16-bit samples*/
  42.  gestaltStereoInput = 8,                    /*sound hardware can record stereo*/
  43.  gestaltLineLevelInput = 9,                    /*sound input port requires line level*/
  44.  gestaltSndPlayDoubleBuffer = 10,            /*SndPlayDoubleBuffer available*/
  45.  gestaltMultiChannels = 11,                    /*multiple channel support*/
  46.  gestalt16BitAudioSupport = 12                /*16 bit audio data supported*/
  47. };
  48.  
  49. enum {
  50.  
  51.  swMode = -1,                                /*Sound Driver modes*/
  52.  ftMode = 1,
  53.  ffMode = 0,
  54.  
  55.  
  56. #define soundListRsrc 'snd '                /*Resource type used by Sound Manager*/
  57. #define kSoundHardwareType 'sdev'            /*component type for sound devices*/
  58.  
  59. #define twelfthRootTwo 1.05946309434
  60.  
  61.  rate44khz = 0xAC440000,                    /*44100.00000 in fixed-point*/
  62.  rate22khz = 0x56EE8BA3,                    /*22254.54545 in fixed-point*/
  63.  rate11khz = 0x2B7745D1,                    /*11127.27273 in fixed-point*/
  64.  
  65. /*synthesizer numbers for SndNewChannel*/
  66.  squareWaveSynth = 1,                        /*square wave synthesizer*/
  67.  waveTableSynth = 3,                        /*wave table synthesizer*/
  68.  sampledSynth = 5,                            /*sampled sound synthesizer*/
  69.  
  70. /*old Sound Manager MACE synthesizer numbers*/
  71.  MACE3snthID = 11,
  72.  MACE6snthID = 13,
  73.  
  74.  kMiddleC = 60,                                /*MIDI note value for middle C*/
  75.  kSimpleBeepID = 1,                            /*reserved resource ID for Simple Beep*/
  76.  kFullVolume = 0x0100,                        /*1.0, setting for full hardware output volume*/
  77.  
  78. /*command numbers for SndDoCommand and SndDoImmediate*/
  79.  nullCmd = 0,
  80.  initCmd = 1,
  81.  freeCmd = 2,
  82.  quietCmd = 3,
  83.  flushCmd = 4,
  84.  reInitCmd = 5,
  85.  
  86.  waitCmd = 10,
  87.  pauseCmd = 11,
  88.  resumeCmd = 12,
  89.  callBackCmd = 13
  90. };
  91. enum {
  92.  syncCmd = 14,
  93.  
  94.  availableCmd = 24,
  95.  versionCmd = 25,
  96.  totalLoadCmd = 26,
  97.  loadCmd = 27,
  98.  
  99.  freqDurationCmd = 40,
  100.  restCmd = 41,
  101.  freqCmd = 42,
  102.  ampCmd = 43,
  103.  timbreCmd = 44,
  104.  getAmpCmd = 45,
  105.  volumeCmd = 46,                            /*sound manager 3.0 or later only*/
  106.  getVolumeCmd = 47,                            /*sound manager 3.0 or later only*/
  107.  
  108.  waveTableCmd = 60,
  109.  phaseCmd = 61
  110. };
  111. enum {
  112.  
  113.  soundCmd = 80,
  114.  bufferCmd = 81,
  115.  rateCmd = 82,
  116.  continueCmd = 83,
  117.  doubleBufferCmd = 84,
  118.  getRateCmd = 85,
  119.  
  120.  sizeCmd = 90,
  121.  convertCmd = 91,
  122.  
  123.  stdQLength = 128,
  124.  dataOffsetFlag = 0x8000,
  125.  
  126.  
  127. /*channel initialization parameters*/
  128.  waveInitChannelMask = 0x07,
  129.  waveInitChannel0 = 0x04,                    /*wave table only, Sound Manager 2.0 and earlier*/
  130.  waveInitChannel1 = 0x05,                    /*wave table only, Sound Manager 2.0 and earlier*/
  131.  waveInitChannel2 = 0x06,                    /*wave table only, Sound Manager 2.0 and earlier*/
  132.  waveInitChannel3 = 0x07,                    /*wave table only, Sound Manager 2.0 and earlier*/
  133.  
  134.  initChan0 = waveInitChannel0,                /*obsolete spelling*/
  135.  initChan1 = waveInitChannel1,                /*obsolete spelling*/
  136.  initChan2 = waveInitChannel2,                /*obsolete spelling*/
  137.  initChan3 = waveInitChannel3,                /*obsolete spelling*/
  138.  
  139.  initPanMask = 0x0003,                        /*mask for right/left pan values*/
  140.  initSRateMask = 0x0030,                    /*mask for sample rate values*/
  141.  initStereoMask = 0x00C0,                    /*mask for mono/stereo values*/
  142.  initCompMask = 0xFF00                        /*mask for compression IDs*/
  143. };
  144. enum {
  145.  initChanLeft = 0x0002,                        /*left stereo channel*/
  146.  initChanRight = 0x0003,                    /*right stereo channel*/
  147.  initNoInterp = 0x0004,                        /*no linear interpolation*/
  148.  initNoDrop = 0x0008,                        /*no drop-sample conversion*/
  149.  initMono = 0x0080,                            /*monophonic channel*/
  150.  initStereo = 0x00C0,                        /*stereo channel*/
  151.  initMACE3 = 0x0300,                        /*MACE 3:1*/
  152.  initMACE6 = 0x0400,                        /*MACE 6:1*/
  153.  
  154.  kUseOptionalOutputDevice = -1,                /*only for Sound Manager 3.0 or later*/
  155.  
  156.  stdSH = 0x00,                                /*Standard sound header encode value*/
  157.  extSH = 0xFF,                                /*Extended sound header encode value*/
  158.  cmpSH = 0xFE,                                /*Compressed sound header encode value*/
  159.  
  160.  notCompressed = 0,                            /*compression ID's*/
  161.  fixedCompression = -1,                        /*compression ID for fixed-sized compression*/
  162.  variableCompression = -2,                    /*compression ID for variable-sized compression*/
  163.  twoToOne = 1,
  164.  eightToThree = 2,
  165.  threeToOne = 3,
  166.  sixToOne = 4,
  167.  
  168.  outsideCmpSH = 0                            /*MACE constants*/
  169. };
  170. enum {
  171.  insideCmpSH = 1,
  172.  aceSuccess = 0,
  173.  aceMemFull = 1,
  174.  aceNilBlock = 2,
  175.  aceBadComp = 3,
  176.  aceBadEncode = 4,
  177.  aceBadDest = 5,
  178.  aceBadCmd = 6,
  179.  sixToOnePacketSize = 8,
  180.  threeToOnePacketSize = 16,
  181.  stateBlockSize = 64,
  182.  leftOverBlockSize = 32,
  183.  
  184.  firstSoundFormat = 0x0001,                    /*general sound format*/
  185.  secondSoundFormat = 0x0002,                /*special sampled sound format (HyperCard)*/
  186.  
  187.  dbBufferReady = 0x00000001,                /*double buffer is filled*/
  188.  dbLastBuffer = 0x00000004,                    /*last double buffer to play*/
  189.  
  190.  sysBeepDisable = 0x0000,                    /*SysBeep() enable flags*/
  191.  sysBeepEnable = 0x0001,
  192.  
  193.  unitTypeNoSelection = 0xFFFF,                /*unitTypes for AudioSelection.unitType*/
  194.  unitTypeSeconds = 0x0000
  195. };
  196.  
  197.  
  198. /*Structures for Sound Driver*/
  199.  
  200.  
  201. typedef unsigned char FreeWave[30001];
  202.  
  203. struct FFSynthRec {
  204.  short mode;
  205.  Fixed count;
  206.  FreeWave waveBytes;
  207. };
  208.  
  209. typedef struct FFSynthRec FFSynthRec;
  210. typedef FFSynthRec *FFSynthPtr;
  211.  
  212. struct Tone {
  213.  short count;
  214.  short amplitude;
  215.  short duration;
  216. };
  217.  
  218. typedef struct Tone Tone;
  219.  
  220.  
  221. typedef Tone Tones[5001];
  222.  
  223. struct SWSynthRec {
  224.  short mode;
  225.  Tones triplets;
  226. };
  227.  
  228. typedef struct SWSynthRec SWSynthRec;
  229. typedef SWSynthRec *SWSynthPtr;
  230.  
  231.  
  232. typedef unsigned char Wave[256];
  233. typedef Wave *WavePtr;
  234.  
  235. struct FTSoundRec {
  236.  short duration;
  237.  Fixed sound1Rate;
  238.  long sound1Phase;
  239.  Fixed sound2Rate;
  240.  long sound2Phase;
  241.  Fixed sound3Rate;
  242.  long sound3Phase;
  243.  Fixed sound4Rate;
  244.  long sound4Phase;
  245.  WavePtr sound1Wave;
  246.  WavePtr sound2Wave;
  247.  WavePtr sound3Wave;
  248.  WavePtr sound4Wave;
  249. };
  250.  
  251. typedef struct FTSoundRec FTSoundRec;
  252. typedef FTSoundRec *FTSndRecPtr;
  253.  
  254. struct FTSynthRec {
  255.  short mode;
  256.  FTSndRecPtr sndRec;
  257. };
  258.  
  259. typedef struct FTSynthRec FTSynthRec;
  260. typedef FTSynthRec *FTSynthPtr;
  261.  
  262. typedef pascal void (*SndCompletionProcPtr)(void);
  263.  
  264. /*Structures for Sound Manager*/
  265.  
  266. struct SndCommand {
  267.  unsigned short cmd;
  268.  short param1;
  269.  long param2;
  270. };
  271.  
  272. typedef struct SndCommand SndCommand;
  273.  
  274.  
  275. typedef struct SndChannel SndChannel;
  276. typedef SndChannel *SndChannelPtr;
  277.  
  278. typedef pascal void (*SndCallBackProcPtr)(SndChannelPtr chan, SndCommand *cmd);
  279.  
  280. struct SndChannel {
  281.     struct SndChannel *nextChan;
  282.     Ptr firstMod;                              /*reserved for the Sound Manager*/
  283.     SndCallBackProcPtr callBack;
  284.     long userInfo;
  285.     long wait;                                 /*The following is for internal Sound Manager use only.*/
  286.     SndCommand cmdInProgress;
  287.     short flags;
  288.     short qLength;
  289.     short qHead;
  290.     short qTail;
  291.     SndCommand queue[stdQLength];
  292. };
  293.  
  294. /*MACE structures*/
  295. struct StateBlock {
  296.  short stateVar[stateBlockSize];
  297. };
  298.  
  299. typedef struct StateBlock StateBlock;
  300. typedef StateBlock *StateBlockPtr;
  301.  
  302. struct LeftOverBlock {
  303.  unsigned long count;
  304.  char sampleArea[leftOverBlockSize];
  305. };
  306.  
  307. typedef struct LeftOverBlock LeftOverBlock;
  308. typedef LeftOverBlock *LeftOverBlockPtr;
  309.  
  310. struct ModRef {
  311.  unsigned short modNumber;
  312.  long modInit;
  313. };
  314.  
  315. typedef struct ModRef ModRef;
  316.  
  317. struct SndListResource {
  318.  short format;
  319.  short numModifiers;
  320.  ModRef modifierPart[1];                    /*This is a variable length array*/
  321.  short numCommands;
  322.  SndCommand commandPart[1];                    /*This is a variable length array*/
  323.  char dataPart[1];                            /*This is a variable length array*/
  324. };
  325.  
  326. typedef struct SndListResource SndListResource;
  327. typedef SndListResource *SndListPtr;
  328. typedef SndListPtr *SndListHndl;
  329.  
  330. struct Snd2ListResource {                    /*HyperCard sound resource format*/
  331.  short format;
  332.  short refCount;
  333.  short numCommands;
  334.  SndCommand commandPart[1];                    /*This is a variable length array*/
  335.  char dataPart[1];                            /*This is a variable length array*/
  336. };
  337.  
  338. typedef struct Snd2ListResource Snd2ListResource;
  339. typedef Snd2ListResource *Snd2ListPtr;
  340. typedef Snd2ListPtr *Snd2ListHndl;
  341.  
  342. struct SoundHeader {
  343.  Ptr samplePtr;                                /*if NIL then samples are in sampleArea*/
  344.  unsigned long length;                        /*length of sound in bytes*/
  345.  Fixed sampleRate;                            /*sample rate for this sound*/
  346.  unsigned long loopStart;                    /*start of looping portion*/
  347.  unsigned long loopEnd;                        /*end of looping portion*/
  348.  unsigned char encode;                        /*header encoding*/
  349.  unsigned char baseFrequency;                /*baseFrequency value*/
  350.  unsigned char sampleArea[1];                /*space for when samples follow directly*/
  351. };
  352.  
  353. typedef struct SoundHeader SoundHeader;
  354. typedef SoundHeader *SoundHeaderPtr;
  355.  
  356. struct CmpSoundHeader {
  357.  Ptr samplePtr;                                /*if nil then samples are in sample area*/
  358.  unsigned long numChannels;                    /*number of channels i.e. mono = 1*/
  359.  Fixed sampleRate;                            /*sample rate in Apples Fixed point representation*/
  360.  unsigned long loopStart;                    /*loopStart of sound before compression*/
  361.  unsigned long loopEnd;                        /*loopEnd of sound before compression*/
  362.  unsigned char encode;                        /*data structure used , stdSH, extSH, or cmpSH*/
  363.  unsigned char baseFrequency;                /*same meaning as regular SoundHeader*/
  364.  unsigned long numFrames;                    /*length in frames ( packetFrames or sampleFrames )*/
  365.  extended80     AIFFSampleRate;                /*IEEE sample rate*/
  366.  Ptr markerChunk;                            /*sync track*/
  367.  OSType format;                                /*data format type, was futureUse1*/
  368.  unsigned long futureUse2;                    /*reserved by Apple*/
  369.  StateBlockPtr stateVars;                    /*pointer to State Block*/
  370.  LeftOverBlockPtr leftOverSamples;            /*used to save truncated samples between compression calls*/
  371.  unsigned short compressionID;                /*0 means no compression, non zero means compressionID*/
  372.  unsigned short packetSize;                    /*number of bits in compressed sample packet*/
  373.  unsigned short snthID;                        /*resource ID of Sound Manager snth that contains NRT C/E*/
  374.  unsigned short sampleSize;                    /*number of bits in non-compressed sample*/
  375.  unsigned char sampleArea[1];                /*space for when samples follow directly*/
  376. };
  377.  
  378. typedef struct CmpSoundHeader CmpSoundHeader;
  379. typedef CmpSoundHeader *CmpSoundHeaderPtr;
  380.  
  381. struct ExtSoundHeader {
  382.  Ptr samplePtr;                                /*if nil then samples are in sample area*/
  383.  unsigned long numChannels;                    /*number of channels,  ie mono = 1*/
  384.  Fixed sampleRate;                            /*sample rate in Apples Fixed point representation*/
  385.  unsigned long loopStart;                    /*same meaning as regular SoundHeader*/
  386.  unsigned long loopEnd;                        /*same meaning as regular SoundHeader*/
  387.  unsigned char encode;                        /*data structure used , stdSH, extSH, or cmpSH*/
  388.  unsigned char baseFrequency;                /*same meaning as regular SoundHeader*/
  389.  unsigned long numFrames;                    /*length in total number of frames*/
  390.  extended80 AIFFSampleRate;                    /*IEEE sample rate*/
  391.  Ptr markerChunk;                            /*sync track*/
  392.  Ptr instrumentChunks;                        /*AIFF instrument chunks*/
  393.  Ptr AESRecording;
  394.  unsigned short sampleSize;                    /*number of bits in sample*/
  395.  unsigned short futureUse1;                    /*reserved by Apple*/
  396.  unsigned long futureUse2;                    /*reserved by Apple*/
  397.  unsigned long futureUse3;                    /*reserved by Apple*/
  398.  unsigned long futureUse4;                    /*reserved by Apple*/
  399.  unsigned char sampleArea[1];                /*space for when samples follow directly*/
  400. };
  401.  
  402. typedef struct ExtSoundHeader ExtSoundHeader;
  403. typedef ExtSoundHeader *ExtSoundHeaderPtr;
  404.  
  405. struct ConversionBlock {
  406.  short destination;
  407.  short unused;
  408.  CmpSoundHeaderPtr inputPtr;
  409.  CmpSoundHeaderPtr outputPtr;
  410. };
  411.  
  412. typedef struct ConversionBlock ConversionBlock;
  413. typedef ConversionBlock *ConversionBlockPtr;
  414.  
  415. struct SMStatus {
  416.  short smMaxCPULoad;
  417.  short smNumChannels;
  418.  short smCurCPULoad;
  419. };
  420.  
  421. typedef struct SMStatus SMStatus;
  422. typedef SMStatus *SMStatusPtr;
  423.  
  424. struct SCStatus {
  425.  Fixed scStartTime;
  426.  Fixed scEndTime;
  427.  Fixed scCurrentTime;
  428.  Boolean scChannelBusy;
  429.  Boolean scChannelDisposed;
  430.  Boolean scChannelPaused;
  431.  Boolean scUnused;
  432.  unsigned long scChannelAttributes;
  433.  long scCPULoad;
  434. };
  435.  
  436. typedef struct SCStatus SCStatus;
  437. typedef SCStatus *SCStatusPtr;
  438.  
  439. struct AudioSelection {
  440.  long unitType;
  441.  Fixed selStart;
  442.  Fixed selEnd;
  443. };
  444.  
  445. typedef pascal void (*FilePlayCompletionProcPtr)(SndChannelPtr chan);
  446.  
  447. typedef struct AudioSelection AudioSelection;
  448. typedef AudioSelection *AudioSelectionPtr;
  449.  
  450. struct SndDoubleBuffer {
  451.  long dbNumFrames;
  452.  long dbFlags;
  453.  long dbUserInfo[2];
  454.  char dbSoundData[1];
  455. };
  456.  
  457. typedef struct SndDoubleBuffer SndDoubleBuffer;
  458. typedef SndDoubleBuffer *SndDoubleBufferPtr;
  459.  
  460. typedef pascal void (*SndDoubleBackProcPtr) (SndChannelPtr chan,
  461.            SndDoubleBufferPtr doubleBufferPtr);
  462.  
  463. struct SndDoubleBufferHeader {
  464.  short dbhNumChannels;
  465.  short dbhSampleSize;
  466.  short dbhCompressionID;
  467.  short dbhPacketSize;
  468.  Fixed dbhSampleRate;
  469.  SndDoubleBufferPtr dbhBufferPtr[2];
  470.  SndDoubleBackProcPtr dbhDoubleBack;
  471. };
  472.  
  473. typedef struct SndDoubleBufferHeader SndDoubleBufferHeader;
  474. typedef SndDoubleBufferHeader *SndDoubleBufferHeaderPtr;
  475.  
  476. struct SndDoubleBufferHeader2 {
  477.     short                    dbhNumChannels;
  478.     short                    dbhSampleSize;
  479.     short                    dbhCompressionID;
  480.     short                    dbhPacketSize;
  481.     Fixed                    dbhSampleRate;
  482.     SndDoubleBufferPtr        dbhBufferPtr[2];
  483.     SndDoubleBackProcPtr    dbhDoubleBack;
  484.     OSType                    dbhFormat;
  485. };
  486.  
  487. typedef struct SndDoubleBufferHeader2 SndDoubleBufferHeader2;
  488. typedef SndDoubleBufferHeader2 *SndDoubleBufferHeader2Ptr;
  489.  
  490.  
  491. #ifdef __cplusplus
  492. extern "C" {
  493. #endif
  494. pascal OSErr SndDoCommand(SndChannelPtr chan,const SndCommand *cmd,Boolean noWait)
  495.  = 0xA803;
  496. pascal OSErr SndDoImmediate(SndChannelPtr chan,const SndCommand *cmd)
  497.  = 0xA804;
  498. pascal OSErr SndNewChannel(SndChannelPtr *chan,short synth,long init,
  499.  SndCallBackProcPtr userRoutine)
  500.  = 0xA807;
  501. pascal OSErr SndDisposeChannel(SndChannelPtr chan,Boolean quietNow)
  502.  = 0xA801;
  503. pascal OSErr SndPlay(SndChannelPtr chan,Handle sndHdl,Boolean async)
  504.  = 0xA805;
  505. pascal OSErr SndAddModifier(SndChannelPtr chan,Ptr modifier,
  506.  short id,long init)
  507.  = 0xA802;
  508. pascal OSErr SndControl(short id,SndCommand *cmd)
  509.  = 0xA806;
  510.  
  511. pascal void SetSoundVol(short level);
  512. #pragma parameter GetSoundVol(__A0)
  513. pascal void GetSoundVol(short *level)
  514.  = {0x4218,0x10B8,0x0260};
  515. pascal void StartSound(const void *synthRec,long numBytes,SndCompletionProcPtr completionRtn);
  516. pascal void StopSound(void);
  517. pascal Boolean SoundDone(void);
  518.  
  519. pascal NumVersion SndSoundManagerVersion(void)
  520.  = {0x203C,0x000C,0x0008,0xA800};
  521. pascal OSErr SndStartFilePlay(SndChannelPtr chan,short fRefNum,short resNum,
  522.     long bufferSize,void *theBuffer,AudioSelectionPtr theSelection,
  523.     FilePlayCompletionProcPtr theCompletion,Boolean async)
  524.  = {0x203C,0x0D00,0x0008,0xA800};
  525. pascal OSErr SndPauseFilePlay(SndChannelPtr chan)
  526.  = {0x203C,0x0204,0x0008,0xA800};
  527. pascal OSErr SndStopFilePlay(SndChannelPtr chan,Boolean quietNow)
  528.  = {0x203C,0x0308,0x0008,0xA800};
  529. pascal OSErr SndChannelStatus(SndChannelPtr chan,short theLength,SCStatusPtr theStatus)
  530.  = {0x203C,0x0010,0x0008,0xA800};
  531. pascal OSErr SndManagerStatus(short theLength,SMStatusPtr theStatus)
  532.  = {0x203C,0x0014,0x0008,0xA800};
  533. pascal void SndGetSysBeepState(short *sysBeepState)
  534.  = {0x203C,0x0018,0x0008,0xA800};
  535. pascal OSErr SndSetSysBeepState(short sysBeepState)
  536.  = {0x203C,0x001C,0x0008,0xA800};
  537. pascal OSErr SndPlayDoubleBuffer(SndChannelPtr chan,SndDoubleBufferHeaderPtr theParams)
  538.  = {0x203C,0x0020,0x0008,0xA800};
  539.  
  540. pascal NumVersion MACEVersion(void)
  541.  = {0x203C,0x0000,0x0010,0xA800};
  542. pascal void Comp3to1(const void *inBuffer,void *outBuffer,unsigned long cnt,
  543.  const void *inState,void *outState,unsigned long numChannels,unsigned long whichChannel)
  544.  = {0x203C,0x0004,0x0010,0xA800};
  545. pascal void Exp1to3(const void *inBuffer,void *outBuffer,unsigned long cnt,
  546.  const void *inState,void *outState,unsigned long numChannels,unsigned long whichChannel)
  547.  = {0x203C,0x0008,0x0010,0xA800};
  548. pascal void Comp6to1(const void *inBuffer,void *outBuffer,unsigned long cnt,
  549.  const void *inState,void *outState,unsigned long numChannels,unsigned long whichChannel)
  550.  = {0x203C,0x000C,0x0010,0xA800};
  551. pascal void Exp1to6(const void *inBuffer,void *outBuffer,unsigned long cnt,
  552.  const void *inState,void *outState,unsigned long numChannels,unsigned long whichChannel)
  553.  = {0x203C,0x0010,0x0010,0xA800};
  554.  
  555. /*Sound Manager 3.0 and later calls*/
  556. pascal OSErr GetSysBeepVolume(long *level)
  557.  = {0x203C,0x0224,0x0018,0xA800};
  558. pascal OSErr SetSysBeepVolume(long level)
  559.  = {0x203C,0x0228,0x0018,0xA800};
  560. pascal OSErr GetDefaultOutputVolume(long *level)
  561.  = {0x203C,0x022C,0x0018,0xA800};
  562. pascal OSErr SetDefaultOutputVolume(long level)
  563.  = {0x203C,0x0230,0x0018,0xA800};
  564. pascal OSErr GetSoundHeaderOffset(Handle sndHandle, long *offset)
  565.  = {0x203C,0x0404,0x0018,0xA800};
  566.  
  567. #ifdef __cplusplus
  568. }
  569. #endif
  570.  
  571. #endif
  572.